﻿Ext.data.ProxyMgr = new Ext.AbstractManager({
    create: function (config) {

        //如果是字符串，说明表示的是代理类型，于是将它作为代理对象的type属性值
        if (config == undefined || typeof config == 'string') {
            config = {
                type: config
            };
        }

        if (!(config instanceof Ext.data.Proxy)) {//如果是代理类的配置对象
            Ext.applyIf(config, {
                type: this.defaultProxyType,//如果参数没有指定代理类型，则用默认类型
                model: this.model           //如果参数没有指定模型
            });

            var type = config[this.typeName] || config.type,
                Constructor = this.types[type];//获取代理类

            if (Constructor == undefined) {
                throw new Error(Ext.util.Format.format("The '{0}' type has not been registered with this manager", type));
            }

            return new Constructor(config);//创建代理类的实例
        } else {//否则就是代理类的实例，直接返回
            return config;
        }
    }
});